WINDOWS 10内核驱动签名注意事项
对于Windows内核驱动签名,微软明确要求使用EV代码签名证书,对于Windows 10经由CA权威机构签发的EV代码签名证书给驱动签名后还必须递交到 Windows Hardware Developer Center Dashboard入口去获得微软的二次数字签名才能正式发布。
对于Windows内核驱动签名,微软明确要求使用EV代码签名证书,对于Windows 10经由CA权威机构签发的EV代码签名证书给驱动签名后还必须递交到 Windows Hardware Developer Center Dashboard入口去获得微软的二次数字签名才能正式发布。
历史背景
2015年10月31日起Windows 10中普通代码签名证书无法用于内核模式驱动签名,必须用EV 代码签名证书签名。
2016年8月1日起所有Windows 10 内核模式驱动经过CA权威机构签发的EV代码签名证书驱动签名后,都必须递交到Windows Hardware Developer Center Dashboard入口去再获得微软的二次数字签名,否则签名会被提示不合法。
在此基础上,给Windows 10的内核驱动进行签名必须要购买EV代码签名证书,签名时还需要添加微软的交叉签名,签名成功后再通过微软开发者中心递交签名文件,这样一个完整的过程才能让你的驱动在Windows10中正常使用。
如何对内核驱动签名
对内核驱动的签名需要使用微软官方的WDK的SignTool进行签名,关于准备工具及证书信息参考:EV代码签名证书签名Windows软件。
准备交叉签名
对于内核驱动签名均需要提供微软给CA权威机构准备的交叉签名,下载对应的交叉签名:交叉签名证书下载,下载后与EV代码签名证书放置在同一目录
SignTool签名
打开WDK的命令行SignTool工具,以Comodo EV Code Signing证书的签名为便(下载AddTrust_External_CA_Root.cer交叉签名),输入以下命令
signtool sign /v /ac "D:AddTrust_External_CA_Root.cer" /s MY /n "Your Company Name" /t http://timestamp.comodoca.com/authenticode "D:driver.sys" signtool sign /v /ac "D:AddTrust_External_CA_Root.cer" /s MY /n "Your Company Name" /as /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 "D:driver.sys"
该命令是对驱动的双签名,双签名在过渡阶段能够兼容低版本操作系统,第一行是sha-1签名,第二行是sha-256签名,详细如下:
ac
配置交叉签名路径/n
证书对应企业名称/as /fd sha256
是针对驱动的sha-256签名/t
针对过时的sha-1时间戳/tr
是sha-256对应的时间戳
签名成功后需满足5级证书链接的基本条件
测试签名
执行下方命令,看到和签名成功一样的结果即表示签名成功
signtool.exe verify /pa /v "D:driver.sys"
*注意:对于上述签名成功的驱动文件,在当前Windows电脑上测试该签名文件,是无法正常测试的,请开发人员在开发环境测试成功之后,将此发行文件提交至Windows Hardware Developer Center Dashboard,经过微软二次签名后才能在正式版的Windows上运行
常见错误
1、用国内开发的一些签名工具不能给驱动文件签名吗?
由于EV代码签名证书的载体是加密后的U盘存储,并没有pfx证书文件格式,所以只能使用signtool进行签名
2、调用驱动文件时报577错误或31错误
自2016年8月1日起,签名后的驱动文件必须将此发行文件提交至Windows Hardware Developer Center Dashboard,经过微软二次签名后才能在正式版的Windows上运行,否则均提示证书签名无效。
至此,Windows 内核驱动签名注意事项就介绍到这,关于更多详情参考参考微软官方说明:对内核驱动程序进行证明签名以便公开发布,或通过右下角联系客服进行详细了解。